#pragma once

#include "Cadena.h"
#include "EstadisticaPrueba.h"
#include "Iterador.h"
#include "ManejadorImpresionPrueba.h"
#include "ManejadorSalidaPrueba.h"
#include "Puntero.h"
#include "TipoRetorno.h"

class Prueba;

class ConductorPrueba
{
	friend Prueba;
public:
	ConductorPrueba();
	~ConductorPrueba();

	void CorrerPruebas(Puntero<Iterador<Puntero<Prueba>>> pruebas);

	const Puntero<ManejadorSalidaPrueba>& GetManejadorSalida() const;
	const Puntero<ManejadorImpresionPrueba>& GetManejadorImpresion() const;

protected:
	void Verificar(TipoRetorno retorno, TipoRetorno retornoEsperado, Cadena comentario);

private:
	Puntero<EstadisticaPrueba> estadisticaGlobal;
	Puntero<ManejadorSalidaPrueba> manejadorSalida;
	Puntero<ManejadorImpresionPrueba> manejadorImpresion;
};
